-----------------------------------------------------------------------------
--
-- Module      :  Main
-- Copyright   :
-- License     :  AllRightsReserved
--
-- Maintainer  :
-- Stability   :
-- Portability :
--
-- |
--
-----------------------------------------------------------------------------

module Main  where

--import Control.Visitor

-- TODO: Сделать расширяемый визитор. Хотелось бы максимально использовать статику.

-- базовая стратегия обхода - функция eval this data = деконстукция data, применение this к
-- результатам деконструкции, вычисление результата, возврат результата.

-- задача - избавиться от указателя this. При этом надо сделать некоторый аналог наследования на
-- тайпклассах.

class Test a where
    test :: a -> String

main =
    do  putStrLn "test"
